
export default interface IService<T> {
    get IsValid(): boolean;

    request?<TRsp, TReq>(cmd: T, data?: TReq): Promise<TRsp>;

    send?<TReq>(cmd:T, data?: TReq): void;

    onMessage?<TRsp>(cmd: T, callback: (msg:TRsp|null)=>void): void;
    offMessage?<TRsp>(cmd: T, callback: (msg:TRsp|null)=>void): void;
}